package br.edu.unipampa.server;

import br.edu.unipampa.encryption.Caesar;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author aLeX
 */
public class Server {

    private final ServerSocket socket;
    private final int port;
    private String mensagemCliente;
    private Socket conectaSocket;
    private BufferedReader paraCliente;
    private DataOutputStream saidaParaCliente;

    public Server(int port) throws IOException {
        this.port = port;
        this.socket = new ServerSocket(this.port);
    }

    public void aguardaConexao() throws IOException {
        this.conectaSocket = this.socket.accept();
        this.paraCliente = new BufferedReader(new InputStreamReader(this.conectaSocket.getInputStream()));
        this.saidaParaCliente = new DataOutputStream(this.conectaSocket.getOutputStream());
        this.setMensagemCliente(paraCliente.readLine());
    }

    public DataOutputStream getSaidaDoCliente() {
        return saidaParaCliente;
    }

    public String getMensagemCliente() {
        return mensagemCliente;
    }

    public void setMensagemCliente(String mensagemCliente) throws IOException {
        Caesar cipher = new Caesar(); //Cria um objeto com a Cifra de César
        String msgAux = cipher.decrypt(mensagemCliente);
        if (msgAux.contains("TERMINAR")) {
            this.socket.close();
            System.out.println(">>> Servidor Finalizado <<<\n");
            System.exit(0);
        }
        this.mensagemCliente = mensagemCliente;
    }

}
